package com.lwl.office.webeditor.parser;

import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;

import java.util.Arrays;
import java.util.List;


/**
 * 解析器选择器
 */
public class ParserSelector {
    private static List<String> htags = Arrays.asList("h1","h2","h3","h4","h5","h6","h7");
    /**
     * 根据节点类型选择对应的处理器
     * @param node
     * @return
     */
    public static NodeParser select(Node node){
        if(node instanceof Element){
            if(htags.contains(((Element) node).tagName())){
                return new ListNodeParser().build(node);
            }
            switch (((Element) node).tagName()){
                case "p":
                    return new PNodeParser().build(node);
                case "span":
                    return new SpanNodeParser().build(node);
                case "a":
                    return new HerfNodeParser().build(node);
                case "strong":
                    return new StrongNodeParser().build(node);
                case "table":
                    return new TableNodeParser().build(node);
                case "em":
                    return new EmNodeParser().build(node);
                case "sup":
                    return new SupNodeParser().build(node);
                case "sub":
                    return new SubNodeParser().build(node);
                case "img":
                    return new ImageNodeParser().build(node);
                case "ul":
                case "ol":
                    return new UlNodeParser().build(node);
                default:
                    return new IgnoredNodeParser().build(node);
            }
        }else{
            return  new TextNodeParser().build(node);
        }
    }
}
